package com.wamod.preference;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.preference.Preference;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.text.InputType;
import android.util.AttributeSet;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.wamod.AccountsManager;
import com.wamod.App;
import com.wamod.Resources;
import com.wamod.Utils;
import com.wamod.entry.ConfigurationActivity;
import com.wamod.themes.CheckIn;
import com.wamod.themes.QTS.Download;
import com.wamod.themes.QTS.Upload;
import com.wamod.themes.UnlinkWAMODThemes;
import java.util.ArrayList;
/**
* Created by BrianValente on 3/3/16.
*/
public class ActionPreference extends Preference {
AppCompatActivity activity;
public ActionPreference(Context context) {
super(context);
activity = (AppCompatActivity) context;
onCreate();
}
public ActionPreference(Context context, AttributeSet attrs) {
super(context, attrs);
activity = (AppCompatActivity) context;
onCreate();
}
public ActionPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
activity = (AppCompatActivity) context;
onCreate();
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public ActionPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
activity = (AppCompatActivity) context;
onCreate();
}
private void onCreate() {
switch (getKey()) {
case "device_id":
setSummary(Utils.getDeviceID());
break;
}
}
@Override
protected void onClick() {
super.onClick();
AlertDialog.Builder alertDialog;
switch (getKey()) {
case "credits":
alertDialog = new AlertDialog.Builder(activity);
alertDialog.setTitle("Credits");
WebView wv = new WebView(activity);
wv.loadUrl("file:///android_asset/wamod_credits.html");
wv.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
alertDialog.setView(wv);
alertDialog.setNegativeButton(activity.getResources().getString(android.R.string.ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
alertDialog.show();
break;
case "conversation_style_entry_config":
Intent intent = new Intent(App.getContext(), ConfigurationActivity.class);
activity.startActivity(intent);
break;
case "checkforupdates":
new CheckIn().execute(activity);
break;
case "restoredefaults":
alertDialog = new AlertDialog.Builder(activity);
alertDialog.setTitle(activity.getResources().getString(Resources.string.wamod_settings_miscellaneous_app_restoredefaults_title));
alertDialog.setMessage(activity.getResources().getString(Resources.string.wamod_settings_miscellaneous_app_restoredefaults_message));
alertDialog.setPositiveButton(activity.getResources().getString(android.R.string.yes), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Utils.edit.putInt("wamodversion", 0);
Utils.edit.apply();
Utils.initWAMOD();
Toast.makeText(activity, activity.getResources().getString(Resources.string.wamod_restartwamod), Toast.LENGTH_LONG).show();
}
});
alertDialog.setNegativeButton(activity.getResources().getString(android.R.string.no), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
alertDialog.show();
break;
case "wamodthemes_unlinkdevice":
alertDialog = new AlertDialog.Builder(activity);
alertDialog.setTitle(activity.getResources().getString(Resources.string.wamod_settings_wamodthemes_unlink_title));
alertDialog.setMessage(activity.getResources().getString(Resources.string.wamod_settings_wamodthemes_unlink_message));
alertDialog.setPositiveButton(activity.getResources().getString(android.R.string.yes), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
UnlinkWAMODThemes async = new UnlinkWAMODThemes();
async.activity = activity;
async.execute();
}
});
alertDialog.setNegativeButton(activity.getResources().getString(android.R.string.no), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
alertDialog.show();
break;
case "wamodthemes_qts_upload":
if (!Utils.isOfficialWAMOD()) {
AlertDialog.Builder unofficial = new AlertDialog.Builder(activity);
unofficial.setMessage(activity.getResources().getString(Resources.getString("wamod_qts_upload_unofficial_message")));
unofficial.show();
return;
}
AlertDialog.Builder builder2 = new AlertDialog.Builder(activity);
builder2.setTitle(Utils.context.getResources().getString(Resources.string.wamod_qts_upload));
builder2.setMessage(Utils.context.getResources().getString(Resources.string.wamod_qts_upload_prompt));
builder2.setPositiveButton(activity.getResources().getString(android.R.string.ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Upload qtsUpload = new Upload();
Upload.activity = activity;
qtsUpload.execute();
}
});
builder2.setNegativeButton(activity.getResources().getString(android.R.string.cancel), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder2.show();
break;
case "wamodthemes_qts_download":
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle(Utils.context.getResources().getString(Resources.string.wamod_qts_download));
final EditText input = new EditText(activity);
input.setInputType(InputType.TYPE_CLASS_TEXT);
input.setHint(Utils.context.getResources().getString(Resources.string.wamod_qts_download_themeid));
builder.setView(input);
builder.setPositiveButton(activity.getResources().getString(android.R.string.ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Download qtsDownload = new Download();
Download.activity = activity;
Download.themeid = input.getText().toString();
qtsDownload.execute();
}
});
builder.setNegativeButton(activity.getResources().getString(android.R.string.cancel), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
break;
case "wamod_privacy_restorecustomprivacy":
AlertDialog.Builder dialog = new AlertDialog.Builder(activity);
dialog.setTitle(activity.getResources().getString(Resources.getString("wamod_settings_privacy_restorecustomprivacy")));
dialog.setMessage(activity.getResources().getString(Resources.getString("wamod_settings_privacy_restorecustomprivacy_message")));
dialog.setPositiveButton(activity.getResources().getString(android.R.string.yes), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
SharedPreferences privacyPrefs = Utils.context.getSharedPreferences("wamod_privacy", 0);
SharedPreferences.Editor privacyPrefs_Edit = privacyPrefs.edit();
boolean general_freezelastseen = privacyPrefs.getBoolean("general_freezelastseen", false);
boolean general_alwaysonline = privacyPrefs.getBoolean("general_alwaysonline", false);
boolean general_reportreceived = privacyPrefs.getBoolean("general_reportreceived", true);
boolean general_reportread = privacyPrefs.getBoolean("general_reportread", true);
boolean general_reporttyping = privacyPrefs.getBoolean("general_reporttyping", true);
privacyPrefs_Edit.clear();
privacyPrefs_Edit.putBoolean("general_freezelastseen", general_freezelastseen);
privacyPrefs_Edit.putBoolean("general_alwaysonline", general_alwaysonline);
privacyPrefs_Edit.putBoolean("general_reportreceived", general_reportreceived);
privacyPrefs_Edit.putBoolean("general_reportread", general_reportread);
privacyPrefs_Edit.putBoolean("general_reporttyping", general_reporttyping);
privacyPrefs_Edit.apply();
}
});
dialog.setNegativeButton(activity.getResources().getString(android.R.string.no), null);
Utils.tintAndShowDialog(dialog);
break;
case "wamod_privacy_restoredefaultprivacy":
AlertDialog.Builder dialog2 = new AlertDialog.Builder(activity);
dialog2.setTitle(activity.getResources().getString(Resources.getString("wamod_settings_privacy_restoredefaultprivacy")));
dialog2.setMessage(activity.getResources().getString(Resources.getString("wamod_settings_privacy_restoredefaultprivacy_message")));
dialog2.setPositiveButton(activity.getResources().getString(android.R.string.yes), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
SharedPreferences privacyPrefs2 = Utils.context.getSharedPreferences("wamod_privacy", 0);
SharedPreferences.Editor privacyPrefs_Edit2 = privacyPrefs2.edit();
privacyPrefs_Edit2.clear();
privacyPrefs_Edit2.putBoolean("general_freezelastseen", false);
privacyPrefs_Edit2.putBoolean("general_alwaysonline", false);
privacyPrefs_Edit2.putBoolean("general_reportreceived", true);
privacyPrefs_Edit2.putBoolean("general_reportread", true);
privacyPrefs_Edit2.putBoolean("general_reporttyping", true);
privacyPrefs_Edit2.apply();
}
});
dialog2.setNegativeButton(activity.getResources().getString(android.R.string.no), null);
Utils.tintAndShowDialog(dialog2);
break;
case "debugging_getfirebasetoken":
String token = com.google.firebase.iid.FirebaseInstanceId.getInstance().getToken();
Utils.copyToClipboard(token);
Toast.makeText(activity, "Token copied to clipboard: " + token, Toast.LENGTH_LONG).show();
break;
case "debugging_switchaccount0":
AccountsManager accountsManager = App.getAccountsManager();
ArrayList<AccountsManager.Account> accounts = accountsManager.getAccounts();
App.getAccountsManager().switchToAccount(accounts.get(0));
break;
case "debugging_showaccounts":
App.getAccountsManager().showAccountsList(activity);
break;
}
}
@Override
protected void onBindView(View view) {
super.onBindView(view);
com.wamod.preference.Preference.loadColors(view);
}
}